<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Account extends CI_Controller
{
	function __construct()
	{
		parent::__construct();
		$this->load->library('session');
		$this->load->model('account/account_model');
	}
	public function index()
    {
        
    }
	public function signup()
	{
		$data = array();
        $error = array();
        $error['username'] = '';
        $error['password'] = '';
        $error['email'] = '';
        $error['captcha'] = '';
        
        $info['username'] = '';
        $info['password'] = '';
        $info['email'] = '';
        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            $captcha = $this->input->post('captcha');
            // check captcha
            $chkCaptcha = $captcha == $this->session->userdata('captcha') ? true : false;
            $error['captcha'] = !$chkCaptcha ? 'Mã bảo mật không đúng.' : ''; 
            
            $username = strtolower(trim($this->input->post('username'), true));
            //  check username
                //  -> check valid
                if($username == '')
                {
                    $error['username'] = 'Tên tài khoản không được để trống.';
                }
                else if(strlen($username) < 4 || strlen($username) > 30)
                {
                    $error['username'] = 'Tài khoản nên có từ 4 đến 20 kí tự.';
                }
                else if(!$this->mycommon->validUsername($username))
                {
                    $error['username'] = 'Tài khoản chỉ gồm chữ và số.';
                }
                //  -> check exists db
                else if($this->account_model->ww_chk_username_available($username))
                {
                    $error['username'] = 'Tài khoản đã tồn tại trên hệ thống.';
                }
                $chkUsername = $error['username'] == '' ? true : false;
                
            $password = $this->input->post('password');
            //  check password
                //  -> check password != '';
                if($password == '')
                {
                    $error['password'] = 'Mật khẩu không được để trống.';
                }
                else if(strlen($password) < 4)
                {
                    $error['password'] = 'Mật khẩu phải dài hơn 4 kí tự.';
                }
                $chkPassword = $error['password'] == '' ? true : false;
                
            $email = $this->input->post('email');
            //  check email
                //  -> check valid
                if($email == '')
                {
                    $error['email'] = 'Địa chỉ email không được để trống.';
                }
                else if(!$this->mycommon->validEmail($email))
                {
                    $error['email'] = 'Địa chỉ email không đúng.';
                }
                //  -> check exists db
                else if($this->account_model->ww_chk_email_available($email))
                {
                    $error['email'] = 'Địa chỉ email đã tồn tại trên hệ thống.';
                }
                $chkEmail = $error['email'] == '' ? true : false;
            if($chkCaptcha == true && $chkUsername == true && $chkPassword == true && $chkEmail == true)
            {
                // save sql
                $username = $this->mycommon->getSaveSqlStr($username);
                $password = $this->mycommon->getSaveSqlStr($password);
                $email = $this->mycommon->getSaveSqlStr($email);
                // key active
                $authorCode = md5($username.$email.time());
                $time = time();
                $this->account_model->ww_addnew_user($username, $password, $email, $time, $authorCode);
                // -> send mail
            }
            else
            {
                
            }
        }
        $data['error'] = $error;
        $cap = $this->get_captcha();
        $data['imageCaptcha'] = $cap['image'];
        $data['word'] = $cap['word'];
		// header
		
		// content
		$this->load->view('account/signup_view', $data);
		
		// footer
	}
    public function edit()
    {
        if(!$this->session->userdata('username'))
        {
            redirect(site_url('login'));
            die();
        }
        $data = array();
        
        $error = array();
        $error['old_password'] = '';
        $error['new_password'] = '';
        $error['renew_password'] = '';
        $uid = $this->session->userdata('uid');
        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            $oldPassword = $this->mycommon->getSaveSqlStr($this->input->post('old_password'));
            $newPassword = $this->mycommon->getSaveSqlStr($this->input->post('new_password'));
            $renewPassword = $this->mycommon->getSaveSqlStr($this->input->post('renew_password'));
            
            $error['new_password'] = (strlen($newPassword) < 4 || strlen($newPassword) > 30) ? 'Độ dài mật khẩu lên hơn 4 và nhỏ hơn 30.' : '';
            $error['renew_password'] = $newPassword != $renewPassword ? 'Mật khẩu không khớp nhau.' : '';
            $chk_pwd = $this->account_model->ww_user_chk_password($uid, $oldPassword);
            $error['old_password'] = !$chk_pwd ? 'Mật khẩu không đúng' : '';
            $chk_newpwd = $error['new_password'] == '' ? true : false;
            $chk_renewpwd = $error['renew_password'] == '' ? true : false;
            
            if($chk_pwd == true && $chk_newpwd == true && $chk_renewpwd == true)
            {
                // change password
                $time = time();
                $value = 3;// nguoi dung thay doi mat khau
                $this->account_model->ww_user_edit_account($uid, $newPassword, $time);
                echo 'done';die();
            }
        }
        
        $data['error'] = $error;
        
		// header
		
		// content
		$this->load->view('account/edit_account_view', $data);
		
		// footer
    }
    public function lost_password()
    {
        if($this->session->userdata('username'))
        {
            redirect(site_url('home'));
            die();
        }
        $data = array();
        $data['errorEmail'] = '';
        $data['infoEmail'] = '';
        
        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            $data['infoEmail'] = $this->input->post('email');
            $email = $this->mycommon->getSaveSqlStr($this->input->post('email'));
            if($this->mycommon->validEmail($email))
            {
                $info = $this->account_model->ww_chk_email_available($email);
                if($info)
                {
                    // reset password
                    $time = time();
                    $key_forgot = md5($email.time());
                    $this->account_model->ww_request_new_password($email, $key_forgot, $time, 0);
                    echo $key_forgot;die();
                    
                    // send mail reset password   
                }
                else
                {
                    $data['errorEmail'] = 'Email không tồn tại trong hệ thống.';
                }
            }
            else
            {
                $data['errorEmail'] = 'Địa chỉ email không hợp lệ.';
            }
        }
        else
        {
            $key = $this->input->get('key');
            if($key != '')
            {
                if($this->mycommon->validMd5($key))
                {
                    $key_info = $this->account_model->ww_get_key_code($key, 1);
                    
                    if($key_info)
                    {
                        $now = time();
                        $key_time = $key_info['lastupdate'];
                        
                        // thoi gian de reset mat khau la 15 phut
                        $chklive = $now - $key_time > 900 ? false : true;
                        if($chklive)
                        {
                            $email = $key_info['email'];
                            $value = 1;// reset mat khau
                            $time = time();
                            $new_password = substr(md5($email.time()), 0, 8);
                            $this->account_model->ww_request_new_password($email, $new_password, $time, $value);
                            echo $new_password;die();
                            // -> send mail
                        }
                        else
                        {
                            // ma kich hoat da het han
                        }
                    }
                    else
                    {
                        // ma kich hoat khong dung
                    }
                }
                else
                {
                    // ma kich hoat khong dung
                }
            }
            else
            {
                // ma kich hoat khong dung
            }
        }
		// header
		
		// content
		$this->load->view('account/lost_password_view', $data);
		
		// footer
    }
    public function active()
    {
        $active_code = $this->input->get('active_code');
        if($active_code != '')
        {
            if($this->mycommon->validMd5($active_code))
            {
                $active_info = $this->account_model->ww_get_key_code($active_code, 0);
                
                if($active_info)
                {
                    $now = time();
                    $active_time = $active_info['createtime'];
                    $chkpast = $now - $active_time > 86400 ? false : true;
                    if($chkpast)
                    {
                        $uid = $active_info['id'];
                        $value = 1;// kich hoat tai khoan
                        $time = time();
                        $this->account_model->ww_update_active_and_block($uid, $value, $time);
                        
                        // -> send mail
                    }
                    else
                    {
                        // ma kich hoat da het han
                    }
                }
                else
                {
                    // ma kich hoat khong dung
                }
            }
            else
            {
                // ma kich hoat khong dung
            }
        }
        else
        {
            // ma kich hoat khong dung
        }
    }
    function refesh_captcha()
    {
        $captcha = $this->get_captcha();
        echo $captcha['image'];
    }
    function get_captcha()
    {
        $this->load->library('session');
        $this->load->helper('captcha');
            $captchaConfig = array(
            'img_path'     => './captcha/',
            'img_url'     => site_url().'captcha/',
            'img_width'     => '170',
            'img_height' => 40,
            'border' => 0,
            'expiration' => 7200,
            'font_path'  => './system/fonts/texb.ttf', // default: ./system/fonts/
            );
        $cap = create_captcha($captchaConfig);
        $data['image'] = $cap['image'];
        $this->session->set_userdata('captcha', $cap['word']);
        return $cap;
    }
}